package com.zhiwei.msf.gateway.service;

/**
 * function 验证码服务
 * author zhiwei.yang
 * time 2020-2-27-16:24
 */
public interface CaptchaService {

    /**
     * 创建验证码
     *
     * @return
     */
    String getCaptcha();

    /**
     * 创建验证码
     *
     * @param serialNo 客户端标识(sessionId)
     * @return
     */
    String getCaptcha(String serialNo);

    /**
     * 清除验证码
     *
     * @param serialNo 客户端标识(sessionId)
     * @return
     */
    void removeCaptcha(String serialNo);

    /**
     * 校验验证码(只判断验证码是否有效)
     *
     * @param captcha
     * @return
     */
    boolean matches(String captcha);

    /**
     * 校验验证码(判断验证码及页面绑定关系) <br/>
     * 参考：银行卡发送短信序号和验证码，这里使用sessionID绑定
     *
     * @param serialNo 序号
     * @param captcha
     * @return
     */
    boolean matches(String serialNo, String captcha);

    /**
     * 保存验证码(不包含页面绑定关系)
     *
     * @param captcha
     * @return
     */
    void saveCaptcha(String captcha);

    /**
     * 保存验证码(包含页面绑定关联关系)
     *
     * @param serialNo
     * @param captcha
     * @return
     */
    void saveCaptcha(String serialNo, String captcha);

    /**
     * 查询已存的验证码(验证码查询1次失效)
     *
     * @param key 缓存Key
     */
    String queryCaptchaByKey(String key);
}